# -*- coding: utf-8 -*-
"""
@Time    : 2024/8/20 10:30 
@Author  : ZhangShenao 
@File    : 2.实例属性.py 
@Desc    : 实例属性
"""


class Dog(object):
    # 定义类属性

    leg_num: int = 4
    has_hair: bool = True
    has_tail: bool = True

    # 定义实例方法

    def bark(self):
        print("小狗正在叫...")

    def eat(self):
        print("小狗正在吃饭...")

    def play(self):
        print("小狗正在玩耍...")


if __name__ == '__main__':
    # 类的实例化
    jin_mao = Dog()
    ha_shi_qi = Dog()

    # 调用实例方法
    jin_mao.eat()
    ha_shi_qi.bark()

    # 实例属性的赋值
    # 可以为每个对象,设置独有的实例属性
    # 不同对象之间的实例属性是互相隔离的
    # 实例属性存储在实例空间,而类属性存储在类空间
    # 查找属性值时,先从实例空间查找,如果实例空间没有,则从类空间查找
    jin_mao.name = "金毛"
    ha_shi_qi.name = "哈士奇"
    print(jin_mao.name)
    print(ha_shi_qi.name)


    # 如果设置了与类属性同名的示例属性,那么类属性将被覆盖

    def jin_mao_bark():
        print("金毛正在叫...")


    jin_mao.bark = jin_mao_bark
    jin_mao.bark()
